﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;

using BUS;
using DTO;

namespace Control
{
    public partial class ctrlLapTheDocGia : DevExpress.XtraEditors.XtraUserControl
    {
        public ctrlLapTheDocGia()
        {
            InitializeComponent();
            
            //format date ngày sinh
            this.dateNgaySinh.Properties.DisplayFormat.FormatString = "dd/MM/yyyy";
            this.dateNgaySinh.Properties.DisplayFormat.FormatType = DevExpress.Utils.FormatType.DateTime;
            this.dateNgaySinh.Properties.EditFormat.FormatString = "dd/MM/yyyy";
            this.dateNgaySinh.Properties.EditFormat.FormatType = DevExpress.Utils.FormatType.DateTime;
            this.dateNgaySinh.Properties.Mask.EditMask = "dd/MM/yyyy";

            //format date ngày lập thẻ
            this.dateNgayLapThe.Properties.DisplayFormat.FormatString = "dd/MM/yyyy";
            this.dateNgayLapThe.Properties.DisplayFormat.FormatType = DevExpress.Utils.FormatType.DateTime;
            this.dateNgayLapThe.Properties.EditFormat.FormatString = "dd/MM/yyyy";
            this.dateNgayLapThe.Properties.EditFormat.FormatType = DevExpress.Utils.FormatType.DateTime;
            this.dateNgayLapThe.Properties.Mask.EditMask = "dd/MM/yyyy";

            //format ngày hết hạn
            this.dateNgayHetHan.Properties.DisplayFormat.FormatString = "dd/MM/yyyy";
            this.dateNgayHetHan.Properties.DisplayFormat.FormatType = DevExpress.Utils.FormatType.DateTime;
            this.dateNgayHetHan.Properties.EditFormat.FormatString = "dd/MM/yyyy";
            this.dateNgayHetHan.Properties.EditFormat.FormatType = DevExpress.Utils.FormatType.DateTime;
            this.dateNgayHetHan.Properties.Mask.EditMask = "dd/MM/yyyy";
            
            //Đọc lên hạn sử dụng thẻ
            hanSuDung = (int)ThamSoBUS.HanSuDung().GiaTri;
        }

        #region "Biến cục bộ"
        int hanSuDung = 0;
        #endregion

        private void ctrlLapTheDocGia_Load(object sender, EventArgs e)
        {
            //Load ds loại độc giả
            lookUpLoaiDocGia.Properties.DataSource = LoaiDocGiaBUS.DocDanhSach();
            //set thuộc tính displaymemeber và valuemember
            lookUpLoaiDocGia.Properties.DisplayMember = "TenLoaiDocGia";
            lookUpLoaiDocGia.Properties.ValueMember = "MaLoaiDocGia";

            //chọn phần tử đầu tiên
            lookUpLoaiDocGia.ItemIndex = 0;

            //Vừa gõ vừa tìm => mấy anh dev bảo cái này ko work T_T
            //lookUpLoaiDocGia.Properties.SearchMode = DevExpress.XtraEditors.Controls.SearchMode.AutoComplete;
            //lookUpLoaiDocGia.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard;
            
            //set giá trị ban đầu cho các date ngày lập thẻ và ngày hết hạn
            dateNgayLapThe.DateTime = DateTime.Today;

            //set tên nhân viên
            txtTenNhanVien.Text = session.tenNhanVien;

            //set date ngày sinh = today
            dateNgaySinh.DateTime = DateTime.Today;
        }

        //mỗi lần ngày lập thay đổi thì ngày hết hạn cũng thay đổi
        private void dateNgayLapThe_DateTimeChanged(object sender, EventArgs e)
        {
            dateNgayHetHan.DateTime = dateNgayLapThe.DateTime.AddMonths(hanSuDung);
        }

        private void LamMoi()
        {
            //đưa textbox về rỗn
            memoDiaChi.Text = "";
            txtEmail.Text = "";
            txtHoTenDocGia.Text = "";

            //chọn phần tử đầu tiên cho lookup
            lookUpLoaiDocGia.ItemIndex = 0;

            //set lại ngày tháng
            dateNgaySinh.DateTime = DateTime.Today;
            dateNgayLapThe.DateTime = DateTime.Today;
        }

        private void btnDongY_Click(object sender, EventArgs e)
        {
            //kiểm tra
            if (KiemTra() == false)
                return;
            try
            {
                //Lấy thông tin loại độc giả từ lookup loại độc giả
                LoaiDocGiaDTO dtoLoaiDocGia = (LoaiDocGiaDTO)lookUpLoaiDocGia.GetSelectedDataRow();

                //tạo dto độc giả
                DocGiaDTO dto = new DocGiaDTO
                {
                    TenDocGia = txtHoTenDocGia.Text.Trim(),
                    DiaChi = memoDiaChi.Text.Trim(),
                    Email = txtEmail.Text.Trim(),
                    MaNhanVien = session.maNhanVien,
                    NgayHetHan = dateNgayHetHan.DateTime,
                    NgayLapThe = dateNgayLapThe.DateTime,
                    NgaySinh = dateNgaySinh.DateTime,
                    TienNo = 0,
                    MaloaiDocGia = dtoLoaiDocGia.MaLoaiDocGia
                };

                //thực hiện thêm
                DocGiaBUS.Them(dto);

                //refresh
                LamMoi();

                //show thông báo
                MessageBox.Show("Thêm thành công!!!");
            }
            catch (Exception ex)
            {
                //show lỗi
                MessageBox.Show(ex.Message, "Lỗi!!!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private bool KiemTra()
        {
            if (txtHoTenDocGia.Text.Trim() == "")
            {
                MessageBox.Show("Họ tên không được để trống", "Lỗi!!!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }

            if (memoDiaChi.Text.Trim() == "")
            {
                MessageBox.Show("Địa chỉ không được để trống", "Lỗi!!!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }

            if (txtEmail.Text.Trim() == "")
            {
                MessageBox.Show("Email không được để trống", "Lỗi!!!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }

            return true;
        }
    }
}
